/**
 * @file EchoCommandImpl.java
 * Projet eCOM 2010 (Miage Descartes)
 * @author Doido Sébastien
 * @version 2
 * @brief Shell : Gestion de la commande d'affichage 'echo'
 */
package ecom.shell;

import java.io.PrintStream;
import java.util.StringTokenizer;

/**
 * @brief Shell : Gestion de la commande d'affichage 'echo'
 * @author Sebastien
 */
public class EchoCommandImpl implements ShellCommand {

    private ShellContext context = null;

    public EchoCommandImpl(ShellContext context) {
        this.context = context;
    }

    /**
     * @brief Renvoie le nom de la commande
     * @return le nom de la commande
     */
    public String getName() {
        return "echo";
    }

    /**
     * @brief Renvoie la manière d'utiliser la commande
     * @return la manière d'utiliser la commande
     */
    public String getUsage() {
        return "echo <messages>";
    }

    /**
     * @brief Renvoie la description de la commande
     * @return la description de la commande
     */
    public String getShortDescription() {
        return "echo messages.\n";
    }

    /**
     * @brief Exécute la commande
     * @param cmdline : commande à exécuter
     * @param out : flux d'affichage std
     * @param err : flux d'affichage err
     * @return les données à afficher
     * @throws java.lang.Exception : erreur durant l'exécution de la méthode
     */
    public String execute(String cmdline, PrintStream out, PrintStream err) {
        StringBuffer res = new StringBuffer();
        StringTokenizer st = new StringTokenizer(cmdline, " ");

        // Ignore the command name.
        st.nextToken();

        // There should be at least one string.
        if (st.countTokens() >= 0) {
            while (st.hasMoreTokens()) {
                res.append(st.nextToken().trim() + ' ');
            }
        } else {
            err.println("\t" + Shell.INCORRECT_ARGS_NUMBER);
        }
        return res.toString();
    }
}
